<!DOCTYPE HTML PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html lang="en" xml:lang="en" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<head>
<META http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>Example: Evolution of the Use-Case Model</title>
<meta name="uma.type" content="Example">
<meta name="uma.name" content="uc_model_evolve">
<meta name="uma.presentationName" content="Evolution of the Use-Case Model">
<meta name="element_type" content="example">
<meta name="filetype" content="description">
<meta name="role" content="">
<link rel="StyleSheet" href="./../../../css/default.css" type="text/css">
<script src="./../../../scripts/ContentPageResource.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageSubSection.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/ContentPageToolbar.js" type="text/javascript" language="JavaScript"></script><script src="./../../../scripts/contentPage.js" type="text/javascript" language="JavaScript"></script><script type="text/javascript" language="JavaScript">
					var backPath = './../../../';
					var imgPath = './../../../images/';
					var nodeInfo=null;
					contentPage.preload(imgPath, backPath, nodeInfo,  '', false, false, false);
				</script>
</head>
<body>
<div id="breadcrumbs"></div>
<table border="0" cellpadding="0" cellspacing="0" width="100%">
<tr>
<td valign="top"><a name="Top"></a>
<div id="page-guid" value="_t4QdAMNqEdu2IdAIaWZyAw"></div>
<table border="0" cellspacing="0" cellpadding="0" width="100%">
<tr>
<td class="pageTitle" nowrap="true">Example: Evolution of the Use-Case Model</td><td width="100%">
<div align="right" id="contentPageToolbar"></div>
</td><td width="100%" class="expandCollapseLink" align="right"><a name="mainIndex" href="./../../../index.htm"></a><script language="JavaScript" type="text/javascript" src="./../../../scripts/treebrowser.js"></script></td>
</tr>
</table>
<table width="100%" border="0" cellpadding="0" cellspacing="0">
<tr>
<td class="pageTitleSeparator"><img src="./../../../images/shim.gif" alt="" title="" height="1"></td>
</tr>
</table>
<div class="overview">
<table width="97%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="50"><img src="./../../../images/example.gif" alt="" title=""></td><td>
<table class="overviewTable" border="0" cellspacing="0" cellpadding="0">
<tr>
<td valign="top">This example illustrates how the use-case model evolves over time when you use a &quot;breadth before depth&quot; approach to maximize value and minimize risk early in the lifecycle and to minimize re-work later.</td>
</tr>
</table>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Relationships</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Related Elements</th><td class="sectionTableCell">
<ul>
<li>
<a href="./../../../core.tech.common.extend_supp/workproducts/use_case_model_85965D1B.html" guid="_W2SgEDR5EdutE_HNDTJk5Q">Use-Case Model</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/use_case_spec_CD5DD9B1.html" guid="_JLOiIMNvEdu2IdAIaWZyAw">Use-Case Specification</a>
</li>
</ul>
</td>
</tr>
</table>
</div>
<div class="sectionHeading">Description</div>
<div class="sectionContent">
<table class="sectionTable" border="0" cellspacing="0" cellpadding="0">
<tr valign="top">
<th class="sectionTableHeading" scope="row">Main Description</th><td class="sectionTableCell"><h1>
    Introduction
</h1>
<p>
    This example illustrates how the use-case model and associated use-case specification will evolve during the lifecycle.
    It shows the state of the use case model at two points in the lifecycle: early inception and towards the end of
    elaboration. The purpose is to illustrate how one would identify, outline and detail requirements so as to maximize
    stakeholder value and minimize risk early in the project, as well as to minimize re-work later.&nbsp;
</p>
<p>
    The example uses an Automated Teller Machine as the example system, because it is familiar to most people. This
    familiarity simplifies understanding the principles without getting lost in domain specific terminology.
</p>
<h2>
    Early inception
</h2>
<p>
    Assume you have just started on the project as the Analyst. You have identified the key stakeholders and met with them
    to discuss their needs. During your meetings, you identified a number of key actors, use cases, and supporting
    requirements for the ATM system. You captured the use cases and actors, with names and brief descriptions only, in the
    use-case model. An example of this work is given in the document <strong>ATM UC Model Inception</strong>.
</p>
<p>
    Prior to committing significant time to detailing these use cases now, you recognize that a "breadth before depth"
    approach can save you valuable time and permit you to identify the highest value and highest risk items so that you can
    concentrate on those first.
</p>
<p>
    You hold a brainstorming session with the stakeholders and outline the basic flow of each of the main use cases. As you
    are working through, you may identify some additional alternative flows. Fight the urge to "dive-in" to the details on
    these alternative flows at this point, simply list them and come back later when you have a better understanding of the
    "big picture".
</p>
<p>
    Examples of the notes you took during this exercise are attached (<strong>Withdraw Cash Outline</strong>,
    <strong>Deposit Funds Outline</strong> and <strong>Transfer</strong> <strong>Funds Outline</strong>).<br />
    <b>Note:</b> the choice of font is intentional to illustrate that these are notes, not formal documents.
</p>
<p>
    Reviewing your notes, you recognize that there is some behavior that is common to most of the use cases, namely the
    steps required to validate the Bank Customer. Factoring this behavior out into an &lt;&lt;included&gt;&gt; use case
    will simplify communications, iteration planning, and maintenance.
</p>
<p>
    You update the use case model accordingly: <strong>ATM UC Model Elaboration</strong>.
</p>
<h2>
    Elaboration
</h2>
<p>
    With a better understanding of the system, you can now prioritize your effort to maximize value and minimize risk. You
    start by detailing the common behavior captured in the use case: Validate User. This use case captures key
    architectural requirements that will exercise a significant portion of the system (communications with the Bank, card
    reader interface, and so on). Implementing this one key scenario will go a long way to reducing risk.
</p>
<p>
    An example of the Validate User use-case specification is attached: <strong>Use Case Spec - Validate User.</strong>
</p>
<p>
    Note that there may still be some un-answered questions, but that's OK. Capture these directly in the use-case
    specification and get them answered (see Section 5.6 of the <strong>Validate User UC Specification</strong>, for an
    example).
</p>
<p>
    Continuing with another architecturally significant thread, you detail the basic flow and some key alternative flows of
    the use case: Withdraw Cash. You know that if the team can implement this, much of the other functionality will be low
    risk.
</p>
<p>
    An example of the Withdraw Cash use-case specification is attached:&nbsp;<strong>Use Case Spec - Withdraw
    Cash</strong>.
</p>
<h1>
    Summary
</h1>
<p>
    By following a breadth before depth approach to outlining and detailing use cases, you can make better decisions on
    priorities. Start by identifying actors. Then for each actor, ask "What is the main purpose this actor would like to
    use the system?". This will lead to the identification of the use cases. Capture the actors and use cases in the
    use-case model along with a brief description.
</p>
<p>
    Prioritize the use cases, and then draft the main scenario or basic flow. As you are working through this you may
    identify alternate flows (what can go wrong, what options are available, and so on). Capture these, along with a brief
    description.
</p>
<p>
    Review the use-case model and reprioritize and assess risk. For the high priority (based on value to the stakeholders)
    or high risk use cases,&nbsp;detail the main scenario and the critical alternate flows.
</p>
<p>
    If you follow this approach, you will increase the likelihood of delivering value early, minimizing risk, and
    minimizing re-work.<br />
</p></td>
</tr>
<tr valign="top">
<th class="sectionTableHeading" scope="row">Attached Files</th><td class="sectionTableCell">
<UL>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/atm_uc_model_elaboration.doc" target="_blank">atm_uc_model_elaboration.doc</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/atm_uc_model_inception.doc" target="_blank">atm_uc_model_inception.doc</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/deposit_funds_outline.doc" target="_blank">deposit_funds_outline.doc</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/transfer_funds_outline.doc" target="_blank">transfer_funds_outline.doc</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/use_case_spec_validate_user.doc" target="_blank">use_case_spec_validate_user.doc</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/use_case_spec_withdraw_cash.doc" target="_blank">use_case_spec_withdraw_cash.doc</a>
</li>
<li>
<a href="./../../../core.tech.common.extend_supp/guidances/examples/resources/withdraw_cash_outline.doc" target="_blank">withdraw_cash_outline.doc</a>
</li>
</UL>
</td>
</tr>
</table>
</div>
<table class="copyright" border="0" cellspacing="0" cellpadding="0">
<tr>
<td class="copyright"><p> This program and the accompanying materials are made available under the<br />
  <a href="http://www.eclipse.org/org/documents/epl-v10.php" target="_blank">Eclipse 
  Public License V1.0</a>, which accompanies this distribution. </p><p/><p> <a class="elementLink" href="./../../../core.default.release_copyright.base/guidances/supportingmaterials/openup_copyright_C3031062.html" guid="_UaGfECcTEduSX6N2jUafGA">OpenUP Copyright</a></p></td>
</tr>
</table>
</td>
</tr>
</table>
</body>
<script type="text/javascript" language="JavaScript">
				contentPage.onload();
			</script>
</html>
